# -*- coding: utf-8 -*-

import os
import shutil
import sys

def copy_md_and_images(source_dir, target_dir):
    """
    复制源目录下所有子目录的.md文件和images文件夹到目标目录
    
    参数:
        source_dir: 源目录路径
        target_dir: 目标目录路径
    """
    for root, dirs, files in os.walk(source_dir):
        # 1. 处理当前目录的.md文件
        for file in files:
            if file.endswith('.md'):
                src_path = os.path.join(root, file)
                rel_path = os.path.relpath(root, source_dir)
                dst_dir = os.path.join(target_dir, rel_path)
                
                # 确保目标目录存在
                os.makedirs(dst_dir, exist_ok=True)
                
                # 复制文件并保留元数据
                shutil.copy2(src_path, dst_dir)
                print(f"已复制: {src_path} -> {os.path.join(dst_dir, file)}")

        # 2. 处理当前目录的images文件夹
        if 'images' in dirs:
            src_images = os.path.join(root, 'images')
            rel_path = os.path.relpath(root, source_dir)
            dst_images = os.path.join(target_dir, rel_path, 'images')
            
            # 复制整个images文件夹
            if os.path.exists(dst_images):
                shutil.rmtree(dst_images)  # 删除现有目标文件夹
            shutil.copytree(src_images, dst_images)
            print(f"已复制: {src_images} -> {dst_images}")
            
            # 从遍历目录中移除已处理的images，避免重复处理
            dirs.remove('images')

def do_copy(source_dir,target_dir):
    # 验证目录存在
    if not os.path.isdir(source_dir):
        print(f"错误: 源目录 '{source_dir}' 不存在")
        sys.exit(1)
    
    # 运行复制操作
    try:
        copy_md_and_images(source_dir, target_dir)
        print(f"\n操作完成! 共复制内容到: {target_dir}")
    except Exception as e:
        print(f"操作出错: {str(e)}")
        sys.exit(1)

if __name__ == "__main__":
    pt_i=r"J:\E_MinerU\MinerU\demo\output"
    pt_o=r"J:\o_new"
    do_copy(pt_i,pt_o)